package com.nhatth.contactsharer;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.util.SparseArray;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class ContactSharerActivity extends ListActivity {
	/** Called when the activity is first created. */
	ListView lv;
	View countLayout;
	static final String TAG = "ContactSharerActivity";
	SparseArray<Long> checkedValue;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Log.i(TAG, "ListMemo activated and showed!");
		//Lấy danh sách các số điện thoại từ db của Contacts
		Cursor c = getContentResolver().query(
				ContactsContract.Contacts.CONTENT_URI,//URI của Contact để kết nói tới db
				new String[] { Contacts._ID, Contacts.DISPLAY_NAME },//Lấy ID và Name
				Contacts.HAS_PHONE_NUMBER + "=1", null, Contacts.DISPLAY_NAME);//Có số điện thoại và ORDER BY tên
		startManagingCursor(c); //Bắt đầu cho activity kiểm soát hoạt động của Cursor c
		
		//bind danh bạ vào ContactSharerActivity
		bindData(c); 
		Log.i(TAG, "Cursor created!");
		
		//lấy list view để chỉnh tùy chọn
		lv = getListView();
		Log.i(TAG, "ListView got!");
		lv.setItemsCanFocus(false);
		lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); //Chọn nhiều
		countLayout = (View) findViewById(R.id.main_countLayout_lblCount); //Lấy cái label nhắc nhở
		countLayout.setBackgroundColor(Color.parseColor("#32000000"));
		
		//lấy EditText của txtSearch
		EditText txtSearch = (EditText) findViewById(R.id.main_txtSearch);
		int count = lv.getCheckItemIds().length;
		
		//lấy TextView lblCount
		TextView lblCount = (TextView) findViewById(R.id.main_countLayout_lblCount);
		lblCount.setText("Bạn đang chọn " + count + " số.");
		
		//Tìm kiếm
		txtSearch.addTextChangedListener(new TextWatcher() {

			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
			}

			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}

			public void afterTextChanged(Editable s) {
				Cursor c = getContentResolver().query(
						ContactsContract.Contacts.CONTENT_URI,
						new String[] { Contacts._ID, Contacts.DISPLAY_NAME },
						Contacts.HAS_PHONE_NUMBER + "= 1 AND "
								+ Contacts.DISPLAY_NAME + " like '%"
								+ s.toString() + "%'", null,
						Contacts.DISPLAY_NAME);
				startManagingCursor(c);
				bindData(c);
				
			}
		});
		checkedValue = new SparseArray<Long>();
	}
	
	//Tạo ra menu
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.menu, menu);
		return true;
	}

	//Dùng để nhảy số khi chọn
	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		if (l.getCheckedItemPositions().get(position, false)) {
			checkedValue.put(position, id);
		}
		else {
			checkedValue.delete(position);
		}
		int count = checkedValue.size();
		TextView lblCount = (TextView) findViewById(R.id.main_countLayout_lblCount);
		lblCount.setText("Bạn đang chọn " + count + " số.");
	}

	//Khi chọn option trong menu
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		int id = item.getItemId();
		switch (id) {
		case R.id.contactSharerActivity_menu_select:
			Log.i(TAG, "Clicked on Menu!");
			long[] contactsIdArr = lv.getCheckItemIds();
			if (contactsIdArr.length == 0) {
				Context ctx = getApplicationContext();
				CharSequence message = "Bạn chưa chọn số nào!";
				Toast.makeText(ctx, message, Toast.LENGTH_SHORT).show();
			} else {
				Intent i = new Intent(this, ComfirmActivity.class);
				i.putExtra("contacts_id", contactsIdArr);
				startActivity(i);
			}
			break;
		case R.id.contactSharerActivity_menu_clearAll:
			for (int i = 0; i < lv.getChildCount(); i++) {
				lv.setItemChecked(i, false);
			}
			int count = lv.getCheckItemIds().length;
			TextView lblCount = (TextView) findViewById(R.id.main_countLayout_lblCount);
			lblCount.setText("Bạn đang chọn " + count + " số.");
			break;
		}
		return true;
	}

	private void bindData(Cursor c) {
		String[] from = new String[] { Contacts.DISPLAY_NAME };
		int[] to = new int[] { android.R.id.text1 };
		
		ListAdapter adapter = new SimpleCursorAdapter(this,
				android.R.layout.simple_list_item_multiple_choice, c, from, to);
		setListAdapter(adapter);
	}

}